<?xml version="1.0" encoding="UTF-8"?>
<html>
    <head>
        <link type="text/css" rel="stylesheet" href="./css/template.css" />
        <link type="text/css" rel="stylesheet" href="./css/SyntaxHighlighter.css" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="”title”" content="”un,mot,clé,java,duke,sun”" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Matisse - Articles - 1/3 - Java &amp; Solaris par le Laboratoire SUPINFO des technologies Sun </title>
        <meta name="Author" content="Laboratoire Sun - SUPINFO Paris" />
        <meta name="owner" content="labo-sun@supinfo.com" />
        <meta name="Identifier-URL" content="http://www.labo-sun.com/" />
        <meta name="Reply-to" content="labo-sun@supinfo.com" />
        <meta name="revisit-after" content="10 days" />
        <meta name="Robots" content="index, follow" />
        <meta name="Description" content="Nous allons découvrir le fonctionnement de cette base de données objet." />
        <meta name="Publisher" content="Laboratoire Sun - SUPINFO Paris" />
        <meta name="Copyright" content="© 2000-2006 Laboratoire Sun - SUPINFO Paris" />
        <script language="javascript" src="./js/shInit.js" />
        <script language="javascript" src="./js/shCore.js" />
        <script language="javascript" src="./js/shBrushCpp.js" />
        <script language="javascript" src="./js/shBrushCSharp.js" />
        <script language="javascript" src="./js/shBrushCss.js" />
        <script language="javascript" src="./js/shBrushDelphi.js" />
        <script language="javascript" src="./js/shBrushJava.js" />
        <script language="javascript" src="./js/shBrushJScript.js" />
        <script language="javascript" src="./js/shBrushPhp.js" />
        <script language="javascript" src="./js/shBrushPython.js" />
        <script language="javascript" src="./js/shBrushRuby.js" />
        <script language="javascript" src="./js/shBrushSql.js" />
        <script language="javascript" src="./js/shBrushVb.js" />
        <script language="javascript" src="./js/shBrushXml.js" />
        <keywords>Java,GUI,matisse,articles,1,3,certification,sun,java,solaris,essentials,tips,astuces,codes,exemple,example,tutorial,developpement,development,jsp,servlet,jdbc,jdo,j2se,j2ee,laboratoire,laboratory</keywords>
    </head>
    <body>
        <div class="chapter">
            <h2>1.Introduction</h2>
            <div class="subChapter">
                <h3>1.1.SGBDO</h3>
                <h4>1.1.1.Introduction</h4>
                <p>Prior to treat the Matisse subject, it is necessary to remember a few concepts from which it comes.</p>
                <p>What is a Database ?</p>
                <p>A Database is a set of informations, organized in a consistent, hierarchical and structured way. This procedure allows to store efficiently a lot of data, in order to make use of it in the future. Nowadays, many softwares allow to create, update, save or delete a database. There are some database creation softwares examples :</p>
                <ul>
                    <li>
                        MDB
                        <br />
                    </li>
                    <li>
                        MySQL
                        <br />
                    </li>
                    <li>
                        Oracle
                        <br />
                    </li>
                </ul>
                <p>Database representation :</p>
                <img src="./images/matisse_html_2f0d9390.gif" />
                <p>An object generaly suscribes to an object oriented program or database. It is an entity (in the broad sense of the word), which has it's own behaviour which suscribes to data logical processing, in order to improve and to simplify the development of the program or the database. An object contains it's own attributes and behaviours (functions, variables). In other words, an object is the display of a real thing in computing world. It possess variables, which reflects it's own caracteristics. An object can inherit another object's caracteristics, which means that it will obtain some of the inherited object's caracteristics.</p>
                <p>Example : the object "People" contains some variables, like FirstName, LastName, etc....</p>
                <br />
                <p>Method</p>
                <p>A method is a function describing one or more object's behaviour</p>
                <br />
                <br />
                <p>ODL (Object Description Language)</p>
                <p>Language used to generate persistent classes</p>
                <br />
                <p>Object identifier</p>
                <p>Allow to identify diverse objects, and to manage relationships between several objects.</p>
                <br />
                <p>Relation</p>
                <p>A relation exists between two or more objects. It is a link between them, allowing to make data or informations to circulate.</p>
                <br />
                <p>Schema</p>
                <p>A schema is the part of a database which describes it's structure.</p>
                <br />
                <p>What is a Object Database ?</p>
                <p>It is a variant of the database. In a Object Database, listed data are objects which interacts one another. There are several database management systems allowing to create an object database. Here are some :</p>
                <br />
                <p>ODBMS (Object DataBase Management System)</p>
                <br />
                <p>We could considerate ODBMS as softwares allowing to use an object database. Here are some examples : Versant, 02, Matisse, etc...</p>
                <p />
            </div>
        </div>
        <div class="chapter">
            <h2>3.Summary</h2>
            <p>With a simple handover, a good user-friendliness, some skills in software development and a few efforts, Matisse could be a excellent object oriented database creation and management tool.</p>
            <br />
            <p>End of the document</p>
        </div>
        <div class="chapter">
            <h2>2.Matisse</h2>
            <div class="subChapter">
                <h3>2.1.Matisse' components and use</h3>
                <h4>2.1.1.Composition</h4>
                <p>Matisse ODBMS is composed by two main parts :</p>
                <br />
                <p>Matisse Enterprise Manager, the interface.
					SQL Stored Methods allows to create SQL requests and components that we could reuse on the server.</p>
                <br />
                <p>Matisse Enterprise Manager allows to manage databases, to import or export relational databases or XML documents, to manage the database security, or to manage administration functions. Matisse Enterprise Manager contains a SQL analysing tool allowing to optimize the SQL requests. It is bound that a graphic interface make the administration tasks easier, but it is possible not to use it.</p>
                <h5>2.1.1.1.A few functionnalities</h5>
                <p>mt_sdl : This functionnality allows to import or export schemes in the database, and to create classes for Java language and C++.</p>
                <ul>
                    <li>mt_xml : allows to import and export XML files.</li>
                    <li>mt_connection : allows to manage database connections.</li>
                    <li>mt_transactionnal : allows to manage, enable or disable the different transactions which could be enabled by the database.</li>
                    <li>limit, offset : allows to choose the maximum number of returned objects and the number of objects existing before the operation.</li>
                    <li>Mt_emgr : allows to create, configure, initialize, start, monitor, shut down, support and reconstitute some databases, and to control the use of database disks, versions and security. Administrative services could be used as well with the commands mt_backup, mt_connection, mt_file, mt_partition, mt_replicate, mt_server, mt_transaction, mt_user et mt_version.</li>
                    <li>Mt-editor allows to update manually the databases objects.</li>
                    <li>Mt_monitor is a graphic tool.</li>
                </ul>
                <p>Example</p>
                <textarea name="code" class="sql">Select champ1
					From table1
					Order by rangerpar
					Limit (nombre maximum d’objets retournés) 2
					Offset (nombre d’objets avant l’opération) 1 ;</textarea>
                <p>MtSQLParse allows to return the type of a request which was not executed.</p>
                <br />
                <p>The client application could connect to the database with a few types of server applications.</p>
                <br />
                <p>You could choose which one of the Matisse APIs you will use (C, C#, C++, Eiffel, Java, Perl, PHP, python, Small talk, Visual Basic, XML, ADO.NET, JDBC, or ODBC)</p>
                <h5>2.1.1.2.Classes in Matisse</h5>
                <p>A class can be defined as class, superclass or subclass. A subclass inherits its superclass properties. It is possible to do multiple inheritance with Matisse. You should avoid this if you want to export your classes in Java, C# or SmallTalk code because those languages do not support multiple inheritance.</p>
                <h5>2.1.1.3.Methods with Matisse</h5>
                <p>You can, in Matisse, define your methods like :</p>
                <br />
                <p>Static method : it is not associated to an particular instance during the program execution. In order to use a static method, you have to write :
					The keyword "CALL" class_name :: method_name (parameter);
					An abstract method is executed for a precise instance, to access or update it with the keyword "SELF". It can be redefined in a subclass, with a method bearing the same name.
					SQL methods are executed on the server side. We could invoque it with another method or in the "WHERE" line.</p>
                <br />
                <p>Entry-Point Dictionaries</p>
                <p>It is a indexing structure containing derived keywords. We could use it to implement a text indexed in a attribute containing a text file. Te generated keywords for the entry-point depends of the "Make-entry" we will use. We generaly use both functions :</p>
                <br />
                <p>« make-entry » classifies all the content of the attribute in one key</p>
                <p>« full-text-make-entry » generates keys for each word of the text</p>
                <br />
                <p>Meta-Schemes</p>
                <br />
                <p>It is a predefined schema containing some objects, like classes or the application scheme.</p>
                <br />
                <p>For the classes scheme, we do use MtClass</p>
                <p>For the attributes scheme, MtAttribute</p>
                <p>And for the relations scheme, MtRelationship</p>
                <br />
                <p>Example :</p>
                <textarea name="code" class="sql">Select MtExample FROM MtClass</textarea>
                <h5>2.1.1.4.How to use Matisse ?</h5>
                <br />
                <br />
                <p>
                    First of all, you have to download the Matisse DBRM :
                    <a href="http://www.matisse.com" target="_blank">www.matisse.com</a>
                    , (choose the correct version for your operating system)
                </p>
                <br />
                <p>When Matisse is installed and launched, this first window will appear. You could see different informations about your computer.</p>
                <img src="./images/matisse_html_65135625.png" />
                <p>This window allows you to create a database : click on "File", the "New DataBase".</p>
                <img src="./images/matisse_html_2770cafd.png" />
                <p>Choose your database's name in the "General" tab</p>
                <img src="./images/matisse_html_m1f784297.png" />
                <p>In the "Data Files" tab, you could see your database's location</p>
                <img src="./images/matisse_html_35e724a6.png" />
                <p>If you click on the "Advanced" tab, you could define a few additional parameters</p>
                <img src="./images/matisse_html_m3438bcc8.png" />
                <p>Enable or not Access Control on the database you are creating</p>
                <img src="./images/matisse_html_145e90a4.png" />
                <p>Specify the cache size of the page and the version collection</p>
                <img src="./images/matisse_html_6fb617bf.png" />
                <p>Choose the monitor's ports and the server's ones</p>
                <img src="./images/matisse_html_3c6850bc.png" />
                <p>Once you have clicked OK, right-click your database in the left menu, then click on "Start" to start it.</p>
                <img src="./images/matisse_html_427a33f7.png" />
                <p>When your database is enabled, this new window will appear</p>
                <img src="./images/matisse_html_25b976c0.png" />
                <p>Create a new class :</p>
                <br />
                <p>Right-click the database</p>
                <p>Select Scheme</p>
                <p>Select New Class</p>
                <img src="./images/matisse_html_65148720.png" />
                <p>Now, you just have to write your SQL code to continue to create your class, and then to click on the "Play" button (the little green triangle in the following picture)</p>
                <img src="./images/matisse_html_74e46af2.png" />
                <p>Example :</p>
                <img src="./images/matisse_html_m73a06fe7.png" />
                <p>When you have created a few classes, you could visualize them in the "classes" folder</p>
                <img src="./images/matisse_html_m654f46a8.png" />
                <h5>2.1.1.5.Some helpful buttons :</h5>
                <img src="./images/matisse_html_m31a5a8fa.png" />
                <p>From left to right :</p>
                <img src="./images/matisse_html_m58ecadbf.png" />
                <img name="Image21" src="./images/matisse_html_1a35cba5.png" />
                Refreshs the database's informations
                <br />
                <img name="Image22" src="./images/matisse_html_m72647f7a.png" />
                Gives you the database state (enabled or not)
                <br />
                <img name="Image23" src="./images/matisse_html_m8994c4f.png" />
                Starts a new database creation sequence
                <br />
                <img name="Image24" src="./images/matisse_html_3a26dcf6.png" />
                Database's properties
                <br />
                <img name="Image25" src="./images/matisse_html_f53fa54.png" />
                Previous database
                <br />
                <img name="Image26" src="./images/matisse_html_m7f9eab27.png" />
                Enables the selected database
                <br />
                <img name="Image27" src="./images/matisse_html_35090bf6.png" />
                Disables the selected database
                <br />
                <img name="Image28" src="./images/matisse_html_220a8a43.png" />
                Following database
                <br />
                <img name="Image29" src="./images/matisse_html_m48802b97.png" />
                Imports the CSV data
                <br />
                <img name="Image30" src="./images/matisse_html_79b94183.png" />
                Imports the XML data
                <br />
                <img name="Image31" src="./images/matisse_html_4884c38d.png" />
                Turns on the SQL Query Analyser (below)
                <img src="./images/matisse_html_m3e064c55.png" />
                <br />
                <img src="./images/matisse_html_m3891048a.png" />
                <br />
                From left to right :
                <img name="Image34" src="./images/matisse_html_m68ba9241.png" />
                Hides or makes the tree case appearing (representation is below)
                <img src="./images/matisse_html_m58ecadbf.png" />
                <br />
                <img name="Image36" src="./images/matisse_html_m6063dbc7.png" />
                Allows to load a new SQL Query Editor (right part of the window where we enter the SQL code)
                <br />
                <img name="Image37" src="./images/matisse_html_5129f10a.png" />
                Allows to load a SQL script
                <br />
                <img name="Image38" src="./images/matisse_html_4e30630f.png" />
                Allows to save the SQL script in creation process (the one you are writing)
                <br />
                <img name="Image39" src="./images/matisse_html_51b6740b.png" />
                Save every SQL scripts in creation process (those you are writing)
                <br />
                <img name="Image40" src="./images/matisse_html_m4f11304e.png" />
                Cleans the SQL Query Editor window (in a black frame)
                <br />
                <img name="Image41" src="./images/matisse_html_2a8b0fa0.png" alt="" align="bottom" border="0" />
                <br />
                <img name="Image42" src="./images/matisse_html_m1c196525.png" alt="" align="bottom" border="0" />
                Choose the display type
                <br />
                <img name="Image43" src="./images/matisse_html_3af4bf0f.png" alt="" align="bottom" border="0" />
                Cleans the messages window (in a black frame)
                <br />
                <img name="Image44" src="./images/matisse_html_m28d50162.png" alt="" align="bottom" border="0" />
                <br />
                <img name="Image45" src="./images/matisse_html_631f1231.png" alt="" align="bottom" border="0" />
                Displays the code errors
                <br />
                <img name="Image46" src="./images/matisse_html_5751d704.png" alt="" align="bottom" border="0" />
                Previous request
                <br />
                <img name="Image47" src="./images/matisse_html_32079dcb.png" alt="" align="bottom" border="0" />
                Execute the current request
                <br />
                <img name="Image48" src="./images/matisse_html_m7a1d9dce.png" alt="" align="bottom" border="0" />
                Following request
                <br />
                <img name="Image49" src="./images/matisse_html_m268f4c37.png" alt="" align="bottom" border="0" />
                Stops the currently running request
                <br />
                <p>Create a method</p>
                <img src="./images/matisse_html_72fab6a5.png" />
                <p>Write your SQL code and execute the same manipulation than in the previous example to run your method.</p>
                <img src="./images/matisse_html_754aa164.png" />
            </div>
        </div>
    </body>
</html>

